#!/bin/bash
###############################################################################
# @用例ID: 20230527-203206-077492713
# @用例名称: iptables_test
# @用例级别: 3
# @用例标签:
# @用例类型: 功能
###############################################################################
[ -z "$TST_TS_TOPDIR" ] && {
    TST_TS_TOPDIR="$(realpath "$(dirname "$0")/..")"
    export TST_TS_TOPDIR
}
source "${TST_TS_TOPDIR}/tst_common/lib/common.sh" || exit 1
###############################################################################

g_tmpdir="$(mktemp -d)"

tc_setup() {
    msg "this is tc_setup"
    # @预置条件:系统正常运行，且已安装 iptables
    assert_true yum install -y iptables
    # @预置条件:
    # @预置条件:
    return 0
}

do_test() {
    msg "this is do_test"

    # @测试步骤:1
    # 创建一个新的 iptables 链
    assert_true iptables -N MYCHAIN

    # @预期结果:1
    # 确保成功创建了名为 MYCHAIN 的新链

    # @测试步骤:2
    # 在 MYCHAIN 链中添加规则
    assert_true iptables -A MYCHAIN -s 192.168.0.0/24 -j ACCEPT

    # @预期结果:2
    # 确保成功将源 IP 地址为 192.168.0.0/24 的数据包转发到 MYCHAIN 链，并允许通过

    # @测试步骤:3
    # 启用转发
    assert_true echo 1 > /proc/sys/net/ipv4/ip_forward

    # @预期结果:3
    # 确保成功启用了 IP 转发功能

    # @测试步骤:4
    # 在 FORWARD 链中添加规则，将数据包转发到 MYCHAIN 链
    assert_true iptables -A FORWARD -j MYCHAIN

    # @预期结果:4
    # 确保成功将数据包转发到 MYCHAIN 链
    assert_true [ 1 -eq 1 ]
    return 0
}

tc_teardown() {
    msg "this is tc_teardown"
    # 清除所有 iptables 规则和链
    assert_true iptables -F
    assert_true iptables -X
    rm -rfv "$g_tmpdir" || return 1
    return 0
}

###############################################################################
tst_main "$@"
###############################################################################
